<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

    <script>
        /*
            every类似于 &&： 有一个是false结果一定是false，全是true才是true
            some 类似于 ||： 有一个是true结果一定是true，全是false才是false

            every和some都有遍历数组的功能，然后每次遍历里返回布尔值
                对于every而言，但凡有一次返回false，结果就是false，而且不会再往下遍历
                对于some而言，但凡有一次返回true，结果就是true，而且不会再往下遍历
        */

        // let nums = [10, 20, 21, 8]
        // // 需求：判断nums数组每个元素是不是都是偶数
        // let res = nums.every(v => {

        //     if (v % 2 == 0) {
        //         return true
        //     }else {
        //         return false
        //     }
        // })

        // console.log(res) // false

        // let nums2 = [10, 20, 22, 8]
        // // 需求：判断nums数组每个元素是不是都是偶数
        // let res2 = nums2.every(v => {

        //     if (v % 2 == 0) {
        //         return true
        //     }else {
        //         return false
        //     }
        // })

        // console.log(res2) // true




        // let nums = [10, 20, 21, 8]
        // // 需求：可以理解为判断只要有偶数即可
        // let res = nums.some(v => {

        //     if (v % 2 == 0) {
        //         return true
        //     }else {
        //         return false
        //     }
        // })

        // console.log(res) // true

        // let nums2 = [10, 20, 22, 8]
        // // 需求：判断nums数组每个元素是不是都是偶数
        // let res2 = nums2.some(v => {

        //     if (v % 2 == 0) {
        //         return true
        //     }else {
        //         return false
        //     }
        // })

        // console.log(res2) // true


        // let list = [
        //     { id: 1, name: '衣服', state: true}, 
        //     { id: 2, name: '鞋子', state: true}, 
        //     { id: 3, name: '裤子', state: false}, 
        // ]

        // 假设list里的state代表选中状态
        // 我现在想判断有没有都选中，都选中才是true，有一个没选中那就必须是false
        // 就得用every
        // let res = list.every( v => {

        //     // if (v.state == true) {
        //     // 因为v.state自身就是布尔值，所以直接拿值即可
        //     if (v.state) {

        //         return true
        //     }else {

        //         return false
        //     }
        // })

        // 继续优化
        // let res = list.every( v => {

        //     // if (v.state) {

        //     //     return true
        //     // }else {

        //     //     return false
        //     // }
            
        //     // 他的值是true就要return，他的值是false就要return false
        //     // 那换句话说就是return 他的值即可
        //     return v.state 
        // })

        // 最终优化
        let list = [
            { id: 1, name: '衣服', state: true}, 
            { id: 2, name: '鞋子', state: true}, 
            { id: 3, name: '裤子', state: false}, 
        ]
        let res = list.every( v => v.state)
        console.log(res) // true

    </script>
</body>

</html>